Distributed software applications include email and messaging applications, web services, and customer relationship management. Such distributed software applications may be provided through systems that employ service-oriented architectures (SOA). SOAs typically are network based with multiple users accessing or using the distributed software applications.
When a business or entity decides to implement an architecture, such as a SOA, the entity predetermines an architecture that includes various server computers (servers), storage (e.g., disk arrays), interconnections (e.g. networks), and other hardware. The predetermined architecture should be designed to effectively support the distributed software applications that the entity desires to implement. Predetermining the architecture should provide for an optimal architecture that maximizes hardware usage without overloading the hardware; adequately supports expected users; and allows for future expected growth. If performed correctly, predetermining the architecture can effectively prevent the entity from investing more than is needed, yet also meet anticipated future needs.
In general, present methods to predetermine architectures are complex, time consuming, expensive, and sometimes not very accurate. Present methods to predetermine an architecture include hiring consultants, or performing the predetermination “in-house”. Performing the predetermination in-house usually involves extensive and costly training, along with the purchase of licensed performance models. Regardless of the method, present methods may be labor intensive, and involve gathering and entering various inputs. Typically, present methods rely on guesses based on specific hardware performance metrics. Such metrics may not address the requirements of specific software applications, and particularly the affect of running the specific software applications. For example, a particular server may provide different results than another server when running a particular software application. In addition, the number of users accessing software applications may be fixed, and no provision is made as to scenarios where the number of users is increased.
Considering the present methods in predetermining an architecture, a significant up front expense is incurred in the decision process of implementing or providing for a service. In certain cases, the decision is made not to implement the service; however, a costly expense is incurred in predetermining the architecture.
In many cases, it is desirable to allow entities to determine an architecture to support their service needs (i.e., distributed software applications), before a commitment is made to implement such an architecture. The determination should be cost effective and generated in a timely manner. The predetermined or prescribed architecture should be an accurate recommendation that meets expected and future needs, and flexible enough to account for different scenarios, such as usage and different software applications.